/*
 * CommonJS 规范
 */

console.log('hello summer')

/* 
 exports 导出内容作为一个对象存在，可以定义属性、方法，对象 {name: 'tom'}
  - 一个模块中可以有多个 exports，最终是形成一个对象
  - 外部接收的与本地是同一个，所以外部能修改
*/

exports.name = 'tom'

exports.add = function(a, b) {
    return a + b;
}

/*
  module.exports 优先级高于 exports，外部优先接收从这里导出的内容，可以对象，方法等
  - 外部修改的只是 module.exports，而 exports 不受影响，注意区分，它们是属于两个模块
*/
module.exports =  {
    param: {a: 'allen'}
}

setTimeout(() => {
    console.log(exports)
    console.log(module.exports)
}, 2000);